//1380. 矩阵中的幸运数
//思路：定义两个vector，一个保存行最小值，一个保存列最小值
//找到两个vector中相同的数字就往ans数组中尾插
//最后返回ans数组

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:
    vector<int> luckyNumbers (vector<vector<int>>& matrix) {
        int n = matrix.size(), m = matrix[0].size();
        vector<int> minRow(n, INT_MAX), maxCol(m, INT_MIN);

        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < m; j++)
            {
                //分别对最小列与最大行更新
                minRow[i] = min(minRow[i], matrix[i][j]);
                maxCol[j] = max(maxCol[j], matrix[i][j]);
            }
        }

        vector<int> ans;
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < m; j++)
            {
                if(minRow[i] == maxCol[j])
                {
                    ans.push_back(minRow[i]);
                    break;//因为数字各不相同，所以只要找到之后就跳出
                }
            }
        }
        return ans;
    }
};